package com.songlanyun.common.supplychainapi.goods.model;

import com.songlanyun.common.drive.ValueObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class GoodsDetailResult implements ValueObject {

    /**
     * 营销价（单位：分）
     */
    private double activityPrice;
    /**
     * 营销利润率
     */
    private double activityRate;
    /**
     * 协议价（单位：分）
     */
    private double agreementPrice;
    /**
     * 属性
     */
    private Attribute[] attributes;
    /**
     * 京东等平台分类id
     */
    private String categoryId;
    /**
     * 成本价（单位：分）
     */
    private double costPrice;
    /**
     * 主图
     */
    private String cover;
    /**
     * 轮播图
     */
    private String[] covers;
    /**
     * 创建时间
     */
    private Long createdTime;
    /**
     * 描述
     */
    private String description;
    /**
     * dis_category 表关联ID
     */
    private String disCategoryEndId;
    /**
     * 当平台来源为京东时默认包含京东自营和厂直，1代表京东自营0厂直（其他平台来源默认为1）
     */
    private Integer goodsType;
    /**
     * 指导价（单位：分）
     */
    private double guidePrice;
    private Long id;
    /**
     * 0不包邮1包邮
     */
    private Integer isFreeShipping;
    /**
     * 市场价（单位：分）
     */
    private double marketPrice;
    /**
     * 规格中的old_goods_id对应的商品标题
     */
    private String oldGoodsTitle;
    /**
     * 产地
     */
    private String origin;
    /**
     * 销量
     */
    private Integer sale;
    /**
     * 销售价（单位：分）
     */
    private double salePrice;
    /**
     * 店铺id
     */
    private Long shopId;
    /**
     * 商家名称
     */
    private String shopName;
    /**
     * 来源1云仓2京东6阿里巴巴7天猫11华南一仓14华东一仓15淘宝
     */
    private Integer source;
    /**
     * 规格
     */
    private Specs specs;
    /**
     * 0下架1上架
     */
    private Integer status;
    /**
     * 库存
     */
    private Integer stock;
    private Tax tax;
    /**
     * 分类品牌名称
     */
    private String thirdBrandName;
    /**
     * 分类名称
     */
    private String thirdCategoryName;
    /**
     * 第三方商品id（可忽视）
     */
    private Long thirdId;
    /**
     * 名称
     */
    private String title;
    /**
     * 总库存
     */
    private Integer totalStock;
    /**
     * 单位(默认"个")
     */
    private String unit;
    /**
     * 更新时间
     */
    private Long updatedTime;

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Option implements ValueObject {
        /**
         * 规格营销价（单位：分）
         */
        private double activityPrice;
        /**
         * 规格协议价（单位：分）
         */
        private double agreementPrice;
        /**
         * 成本价（单位：分）
         */
        private double costPrice;
        /**
         * 商品spu id
         */
        private Long goodsId;
        /**
         * 规格指导价（单位：分）
         */
        private double guidePrice;
        /**
         * 商品sku id
         */
        private Long id;
        /**
         * 规格图片
         */
        private String image;
        /**
         * 规格市场价（单位：分）
         */
        private double marketPrice;
        /**
         * 被聚合京东商品goods_id
         */
        private Long oldGoodsId;
        /**
         * 规格销售价（单位：分）
         */
        private double salePrice;
        /**
         * 规格值id组合，下划线分割
         */
        private String specValueIds;
        /**
         * 规格值组合，逗号分割
         */
        private String specValueNames;
        /**
         * '上下架   0 下架 1上架'
         */
        private Integer status;
        /**
         * 库存
         */
        private Integer stock;
        /**
         * 重量
         */
        private double weight;

    }

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Tax implements ValueObject {
        /**
         * 说明
         */
        private String explain;
        private Long id;
        /**
         * 关键字
         */
        private String keyWord;
        /**
         * 金蝶编码
         */
        private String kingdeeCode;
        /**
         * 是否是汇总项,0不是,1是(汇总项不能开票)
         */
        private Integer kingdeeIsGather;
        /**
         * 金蝶开票税率
         */
        private String kingdeeTax;
        /**
         * 商品和服务名称
         */
        private String name;
        /**
         * 税务编号
         */
        private String number;
    }

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Value implements ValueObject {
        /**
         * 商品id
         */
        private Long goodsId;
        private Long id;
        /**
         * 规格值
         */
        private String name;
        /**
         * 排序
         */
        private Integer sort;
        /**
         * 规格名id
         */
        private Long specNameId;
    }

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Name implements ValueObject {
        /**
         * 商品id
         */
        private Long goodsId;
        private Long id;
        /**
         * 规格名称
         */
        private String name;
        /**
         * 排序
         */
        private Integer sort;
    }

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Specs implements ValueObject {
        /**
         * 规格名列表
         */
        private Name[] names;

        private Option[] options;
        /**
         * 规格值列表
         */
        private Value[] values;
    }

    @lombok.Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Attribute implements ValueObject {
        /**
         * 属性名
         */
        private String name;
        /**
         * 属性值
         */
        private String value;
    }

}
